package com.shuda.business.crm.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 跟进提醒实体类
 * @author shuda
 */
@TableName("crm_follow_up_reminder")
public class FollowUpReminderEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名称
     */
    private String userName;

    /**
     * 提醒时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime reminderTime;

    /**
     * 提醒内容
     */
    private String reminderContent;

    /**
     * 提醒状态：pending-待提醒，reminded-已提醒，cancelled-已取消
     */
    private String reminderStatus;

    /**
     * 提醒方式：system-系统提醒，email-邮件，sms-短信
     */
    private String reminderType;

    /**
     * 实际提醒时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime actualReminderTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 删除标记：0-未删除，1-已删除
     */
    @TableLogic
    private Integer deleted;

    /**
     *
     * FollowUpReminderEntity访问器
     * @param $params$
     * @return $returns$
     * @author ink
     * @Description: 显式提供getter，避免方法引用编译失败
     * @date 2025-11-09 10:35
     */
    public Long getId() { return id; }
    public Long getCustomerId() { return customerId; }
    public String getCustomerName() { return customerName; }
    public Long getUserId() { return userId; }
    public String getUserName() { return userName; }
    public LocalDateTime getReminderTime() { return reminderTime; }
    public String getReminderContent() { return reminderContent; }
    public String getReminderStatus() { return reminderStatus; }
    public String getReminderType() { return reminderType; }
    public LocalDateTime getActualReminderTime() { return actualReminderTime; }
    public String getRemark() { return remark; }
    public Long getTenantId() { return tenantId; }
    public String getCreateBy() { return createBy; }
    public LocalDateTime getCreateTime() { return createTime; }
    public String getUpdateBy() { return updateBy; }
    public LocalDateTime getUpdateTime() { return updateTime; }
    public Integer getDeleted() { return deleted; }
}